package service;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;

import controle.log.HistoricoDao;

import model.Atendimento;
import model.Item;
import model.Usuario;
import dao.ItemDao;

public class ItemService extends GenericService {

	public ItemService() {
		super();
	}
	public ArrayList<Item> select(Atendimento atendimento){
		
		ArrayList<Item> items=null;
		
		try {
			ItemDao adao = new ItemDao();
			items=adao.getItems(atendimento);
			setCount(items.size());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return items;
		
	}
	
	public ArrayList<Item> select (Item item,int paginaAtual){
		int limit=this.getLimite();
		int inicio=(paginaAtual*limit)-limit;
		if (paginaAtual==0){//se pagina igual a zero retorna todos
			limit=0;
			inicio=0;
		}
		ArrayList<Item> items=null;
		
		try {
			ItemDao iDao = new ItemDao();
			items=iDao.getItems(item, limit, inicio);
			setCount(new ItemDao().countGetItems(item));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (items == null)
			items = new ArrayList<Item>();
		return items;
	}

	public void delete(Item item, Usuario usuarioLogado) {
		ItemDao itemDao=new ItemDao();
		try {
			if (item.getAtivo()!=null){
			PreparedStatement ps = null;
			ps = itemDao.desativar(item);			
		
			HistoricoDao historicoDao = new HistoricoDao();
			historicoDao.adicionar(ps, usuarioLogado);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void insertAll(ArrayList<Item> items, Atendimento atendimento,Usuario usuarioLogado) throws SQLException {
		
		for (int i = 0; i < items.size(); i++) {
			Item item = new Item();
			item.setAtendimento(atendimento);
			item.setHabilitacao(items.get(i).getHabilitacao());
			item.setQuantidade(items.get(i).getQuantidade());
			this.insert(item, usuarioLogado);
		
			
			
			
		}
		
	}
	
	public void insert(Item item,Usuario usuarioLogado) throws SQLException {
		
			ItemDao iDao = new ItemDao();
			PreparedStatement ps=iDao.adicionar(item);
			HistoricoDao historicoDao = new HistoricoDao();
			historicoDao.adicionar(ps, usuarioLogado);
			
		
	}
	
	
	public void updateAll(ArrayList<Item> items, Atendimento atendimento,Usuario usuarioLogado) throws SQLException {
		for (int i = 0; i < items.size(); i++) {
			
			Item item = this.select(items.get(i));

			item.setAtendimento(atendimento);
			item.setHabilitacao(items.get(i).getHabilitacao());
			item.setQuantidade(items.get(i).getQuantidade());
			this.update(item, usuarioLogado);
		}
	
	}
	private Item select(Item item) {
		ArrayList<Item> items=null;
		
		try {
			ItemDao iDao = new ItemDao();
			items = iDao.getItems(item, 0, 0);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Item Item2= null;
		if (items!=null)
			Item2 = items.get(0);
		return Item2;
	}
	private void update(Item item, Usuario usuarioLogado) throws SQLException {
		ItemDao iDao = new ItemDao();
		PreparedStatement ps=iDao.alterar(item);
		HistoricoDao historicoDao = new HistoricoDao();
		historicoDao.adicionar(ps, usuarioLogado);
		
	}
	
	
}
